\chapter{Ensemble de Mandelbrot}
\section{Propritétés}
\subsection{Question 10}

	Montrer par récurrence que si $|c| > 2$ alors pour tout $i, |P_c^n| \ge |c|^n$.

	Initialisation: Pour n=1
	\[
		|P_c^1| = |f_c(0)| = |c|
	\]

	Hérédité: Soit $n\ge1$. Supposons que $|P_c^n|\ge|c|^n$. Alors
	\begin{align*}
		|P_c^{n+1}| & =|f_c(P_c^n)| \\
			    & = |(P_c^n)² + c| \\
			    & \ge \big||(P_c^n)^2|-|c|\big|
					\qquad \text{d'après l'inégalité du triangle}\\
			    & \ge \big|(|c|^n)^2 - |c|\big|
					\qquad \text{d'après l'hypothèse de récurrence}\\
			    & \ge \big||c|^{n-1} - \frac{1}{|c|^n}\big| \times |c|^{n+1} \\
			    & \ge \big||c|^{n-1}-1\big| \times |c|^{n+1}
					\qquad \text{car $|c|>2 \Rightarrow
						\forall n \ge 1$, $\frac{1}{|c|^n} < 1$} \\
			    & \ge |c|^{n+1}
					\qquad \text{car $|c|>2 \Rightarrow
						\forall n\ge2, |c|^{n-1}>2 \Leftrightarrow
						|c|^{n-1}-1 > 1$}
	\end{align*}

	Conclusion: L'hypothèse est vérifiée.

\subsection{Question 11}

	Montrer que si la suite atteint une valeur dont le module est plus grand que 2, alors elle diverge.

	Soit $|P_c^{n_0}|=2+\varepsilon,\quad \forall \varepsilon > 0$
	\begin{align*}
		|P_c^{n_0+1}|	& = |(P_c^{n_0})^2+c|\\
				& \ge |(P_c^{n_0})^2|-|c|
					\qquad \text{d'après l'inégalité du triangle} \\
				& \ge |(P_c^{n_0})^2|-|P_c^{n_0}|
					\qquad \forall|c|\le2 \ et \ n_0 \mid P_c^{n_0}>2 \Rightarrow
						P_c^{n_0}>|c| \\
				& \ge |P_c^{n_0}| \times |P_c^{n_0}-1| \\
				& \ge |P_c^{n_0}|(2+\varepsilon -1) \\
				& \ge |P_c^{n_0}|(1+\varepsilon)
	\end{align*}

	Par récurrence immédiate nous en déduisons que
	\[
		\forall n \ge n_0, \quad |P_c^n| \ge |P_c^{n_0}|(1+\varepsilon )^{n-n_0}
			\xrightarrow[n\to+\infty]{} +\infty
	\]

\subsection{Question 12}

	Le code C de la fonction de calcul du nombre d'iterations avant divergence de la suite de Mandelbrot est donné ci-après:

	\begin{verbatim}
unsigned char iterations(float re, float im)
{
        float cRe = re;
        float cIm = im;
        float zRe = 0, zIm = 0;
        unsigned char k = 0;

        while( (zRe*zRe + zIm*zIm <= 4) && (k < 255) ) {
                float zReOld = zRe;
                /* Compute z = z^2 + c */
                zRe = zRe*zRe - zIm*zIm + cRe;
                zIm = 2*zIm*zReOld + cIm;
                /* Increment iteration number */
                k += 1;
        }

        return k;
}
	\end{verbatim}

\section{Affichage de l'ensemble}
\subsection{Question 13}
	Soit RE\_MIN et RE\_MAX les bornes de la partie réelle de l'intervalle de c et IM\_MIN et IM\_MAX celles de sa partie imaginaire. Soit IMG\_WIDTH et IMG\_HEIGHT les dimensions de l'image en nombre de pixels.

	Alors pour associer à chaque pixel une valeur de c dans l'intervalle on peut utiliser les formules:
	\[
		\forall j \in [0...\scriptstyle IMG\_WIDTH \displaystyle -1], \
		Re(c) = \frac{j}{\scriptstyle IMG\_WIDTH \displaystyle -1}
		\times (\scriptstyle RE\_MAX \displaystyle - \scriptstyle RE\_MIN \displaystyle )
		+ \scriptstyle RE\_MIN \displaystyle
	\]
	\[
		\forall i \in [0...\scriptstyle IMG\_HEIGHT \displaystyle -1], \
		Im(c) = \frac{i}{\scriptstyle IMG\_HEIGHT \displaystyle -1}
		\times (\scriptstyle IM\_MAX \displaystyle - \scriptstyle IM\_MIN \displaystyle )
		+ \scriptstyle IM\_MIN \displaystyle
	\]

	Le $-1$ au dénominateur permet d'inclure les bornes de l'intervalle dans l'image.

\subsection{Question 14}
	Voir l'archive pour le programme \emph{main.c} tracant l'ensemble de Mandelbrot. L'image générée est présenté figure \ref{fig:mandel}. L'image est visuellement déformée car ses dimensions sont carrées alors que l'intervalle ne l'est pas.

	\begin{figure}
	\centering
		\includegraphics[width=.5\textwidth]{./images/mandelbrot.png}
	\caption{Ensemble de Mandelbrot, $\forall Im(c) \ge 0$}
	\label{fig:mandel}
	\end{figure}
\section{Calculs sans flottants}
\subsection{Question 15}
	Pour diviser deux nombres en précision fixe, les facteurs d'échelles s'annulent. Il faut donc effectuer l'opération: (a/b)*s.

	Pour additioner deux nombres en précision fixe, il n'y a pas de problème de facteur d'échelle. On peut donc faire une simple addition (a+b).

\subsection{Question 16}
	Voir l'archive pour les fichiers \emph{main.c} et \emph{iteration.c} implémentant les calculs sans flotant.
